home *** CD-ROM | disk | FTP | other *** search
Text File | 1994-11-11 | 10.4 KB | 723 lines | [TEXT/MPS ] |
- ;
- ; File: Memory.a
- ;
- ; Copyright: © 1984-1994 by Apple Computer, Inc.
- ; All rights reserved.
- ;
- ; Version: Universal Interfaces 2.0a3 ETO #16, MPW prerelease. Friday, November 11, 1994.
- ;
- ; Bugs?: If you find a problem with this file, send the file and version
- ; information (from above) and the problem description to:
- ;
- ; Internet: apple.bugs@applelink.apple.com
- ; AppleLink: APPLE.BUGS
- ;
- ;
-
- IF &TYPE('__MEMORY__') = 'UNDEFINED' THEN
- __MEMORY__ SET 1
-
-
- IF &TYPE('__TYPES__') = 'UNDEFINED' THEN
- include 'Types.a'
- ENDIF
- ; include 'ConditionalMacros.a' ;
-
- IF &TYPE('__MIXEDMODE__') = 'UNDEFINED' THEN
- include 'MixedMode.a'
- ENDIF
-
- maxSize EQU $800000 ;Max data block size is 8 megabytes
- defaultPhysicalEntryCount EQU 8
- ; values returned from the GetPageState function
- kPageInMemory EQU 0
- kPageOnDisk EQU 1
- kNotPaged EQU 2
-
- ; masks for Zone->heapType field
- k32BitHeap EQU 1 ; valid in all Memory Managers
- kNewStyleHeap EQU 2 ; true if new Heap Manager is present
- kNewDebugHeap EQU 4 ; true if new Heap Manager is running in debug mode on this heap
-
- ; size of a block in bytes
- Zone RECORD 0
- bkLim ds.l 1
- purgePtr ds.l 1
- hFstFree ds.l 1
- zcbFree ds.l 1
- gzProc ds.l 1
- moreMast ds.w 1
- flags ds.w 1
- cntRel ds.w 1
- maxRel ds.w 1
- cntNRel ds.w 1
- heapType ds.b 1
- unused ds.b 1
- cntEmpty ds.w 1
- cntHandles ds.w 1
- minCBFree ds.l 1
- purgeProc ds.l 1
- sparePtr ds.l 1
- allocPtr ds.l 1
- heapData ds.w 1
- sizeof EQU 54
- ENDR
-
- MemoryBlock RECORD 0
- address ds.l 1
- count ds.l 1
- sizeof EQU 8
- ENDR
-
- LogicalToPhysicalTable RECORD 0
- logical ds MemoryBlock
- physical ds MemoryBlock
- sizeof EQU 16
- ENDR
-
- IF GENERATING68K THEN
- Macro
- GetApplLimit
- move.L $0130,(sp)
- EndM
- ELSE
- IMPORT GetApplLimit
- ENDIF
-
- IF GENERATING68K THEN
- Macro
- SystemZone
- move.L $02A6,(sp)
- EndM
- ELSE
- IMPORT SystemZone
- ENDIF
-
- IF GENERATING68K THEN
- Macro
- ApplicationZone
- move.L $02AA,(sp)
- EndM
- ELSE
- IMPORT ApplicationZone
- ENDIF
-
- IF GENERATING68K THEN
- Macro
- GZSaveHnd
- move.L $0328,(sp)
- EndM
- ELSE
- IMPORT GZSaveHnd
- ENDIF
-
- IF GENERATING68K THEN
- Macro
- TopMem
- move.L $0108,(sp)
- EndM
- ELSE
- IMPORT TopMem
- ENDIF
-
- IF GENERATING68K THEN
- Macro
- MemError
- move.W $0220,(sp)
- EndM
- ELSE
- IMPORT MemError
- ENDIF
-
- IF GENERATING68K THEN
- _GetZone: OPWORD $A11A
- ELSE
- IMPORT GetZone
- ENDIF
-
- IF GENERATING68K THEN
- _NewHandle: OPWORD $A122
- ELSE
- IMPORT NewHandle
- ENDIF
-
- IF GENERATING68K THEN
- _NewHandleSys: OPWORD $A522
- ELSE
- IMPORT NewHandleSys
- ENDIF
-
- IF GENERATING68K THEN
- _NewHandleClear: OPWORD $A322
- ELSE
- IMPORT NewHandleClear
- ENDIF
-
- IF GENERATING68K THEN
- _NewHandleSysClear: OPWORD $A722
- ELSE
- IMPORT NewHandleSysClear
- ENDIF
-
- IF GENERATING68K THEN
- _HandleZone: OPWORD $A126
- ELSE
- IMPORT HandleZone
- ENDIF
-
- IF GENERATING68K THEN
- _RecoverHandle: OPWORD $A128
- ELSE
- IMPORT RecoverHandle
- ENDIF
-
- IF GENERATING68K THEN
- _RecoverHandleSys: OPWORD $A528
- ELSE
- IMPORT RecoverHandleSys
- ENDIF
-
- IF GENERATING68K THEN
- _NewPtr: OPWORD $A11E
- ELSE
- IMPORT NewPtr
- ENDIF
-
- IF GENERATING68K THEN
- _NewPtrSys: OPWORD $A51E
- ELSE
- IMPORT NewPtrSys
- ENDIF
-
- IF GENERATING68K THEN
- _NewPtrClear: OPWORD $A31E
- ELSE
- IMPORT NewPtrClear
- ENDIF
-
- IF GENERATING68K THEN
- _NewPtrSysClear: OPWORD $A71E
- ELSE
- IMPORT NewPtrSysClear
- ENDIF
-
- IF GENERATING68K THEN
- _PtrZone: OPWORD $A148
- ELSE
- IMPORT PtrZone
- ENDIF
-
- IF GENERATING68K THEN
- _MaxBlock: OPWORD $A061
- ELSE
- IMPORT MaxBlock
- ENDIF
-
- IF GENERATING68K THEN
- _MaxBlockSys: OPWORD $A461
- ELSE
- IMPORT MaxBlockSys
- ENDIF
-
- IF GENERATING68K THEN
- _StackSpace: OPWORD $A065
- ELSE
- IMPORT StackSpace
- ENDIF
-
- IF GENERATING68K THEN
- _NewEmptyHandle: OPWORD $A166
- ELSE
- IMPORT NewEmptyHandle
- ENDIF
-
- IF GENERATING68K THEN
- _NewEmptyHandleSys: OPWORD $A566
- ELSE
- IMPORT NewEmptyHandleSys
- ENDIF
-
- IF GENERATING68K THEN
- _HLock: OPWORD $A029
- ELSE
- IMPORT HLock
- ENDIF
-
- IF GENERATING68K THEN
- _HUnlock: OPWORD $A02A
- ELSE
- IMPORT HUnlock
- ENDIF
-
- IF GENERATING68K THEN
- _HPurge: OPWORD $A049
- ELSE
- IMPORT HPurge
- ENDIF
-
- IF GENERATING68K THEN
- _HNoPurge: OPWORD $A04A
- ELSE
- IMPORT HNoPurge
- ENDIF
-
- IF GENERATING68K THEN
- Macro
- _HLockHi
- dc.w $A064
- dc.w $A029
- EndM
- ELSE
- IMPORT HLockHi
- ENDIF
-
- IF GENERATING68K THEN
- Macro
- _TempNewHandle
- move.w #$001D,-(sp)
- dc.w $A88F
- EndM
- ELSE
- IMPORT TempNewHandle
- ENDIF
-
- IF GENERATING68K THEN
- Macro
- _TempMaxMem
- move.w #$0015,-(sp)
- dc.w $A88F
- EndM
- ELSE
- IMPORT TempMaxMem
- ENDIF
-
- IF GENERATING68K THEN
- Macro
- _TempFreeMem
- move.w #$0018,-(sp)
- dc.w $A88F
- EndM
- ELSE
- IMPORT TempFreeMem
- ENDIF
-
- ; Temporary Memory routines renamed, but obsolete, in System 7.0 and later.
- IF GENERATING68K THEN
- Macro
- _TempHLock
- move.w #$001E,-(sp)
- dc.w $A88F
- EndM
- ELSE
- IMPORT TempHLock
- ENDIF
-
- IF GENERATING68K THEN
- Macro
- _TempHUnlock
- move.w #$001F,-(sp)
- dc.w $A88F
- EndM
- ELSE
- IMPORT TempHUnlock
- ENDIF
-
- IF GENERATING68K THEN
- Macro
- _TempDisposeHandle
- move.w #$0020,-(sp)
- dc.w $A88F
- EndM
- ELSE
- IMPORT TempDisposeHandle
- ENDIF
-
- IF GENERATING68K THEN
- Macro
- _TempTopMem
- move.w #$0016,-(sp)
- dc.w $A88F
- EndM
- ELSE
- IMPORT TempTopMem
- ENDIF
-
- IF GENERATING68K THEN
- _InitApplZone: OPWORD $A02C
- ELSE
- IMPORT InitApplZone
- ENDIF
-
- IF GENERATING68K THEN
- _SetZone: OPWORD $A01B
- ELSE
- IMPORT SetZone
- ENDIF
-
- IF GENERATING68K THEN
- _CompactMem: OPWORD $A04C
- ELSE
- IMPORT CompactMem
- ENDIF
-
- IF GENERATING68K THEN
- _CompactMemSys: OPWORD $A44C
- ELSE
- IMPORT CompactMemSys
- ENDIF
-
- IF GENERATING68K THEN
- _PurgeMem: OPWORD $A04D
- ELSE
- IMPORT PurgeMem
- ENDIF
-
- IF GENERATING68K THEN
- _PurgeMemSys: OPWORD $A44D
- ELSE
- IMPORT PurgeMemSys
- ENDIF
-
- IF GENERATING68K THEN
- _FreeMem: OPWORD $A01C
- ELSE
- IMPORT FreeMem
- ENDIF
-
- IF GENERATING68K THEN
- _FreeMemSys: OPWORD $A41C
- ELSE
- IMPORT FreeMemSys
- ENDIF
-
- IF GENERATING68K THEN
- _ReserveMem: OPWORD $A040
- ELSE
- IMPORT ReserveMem
- ENDIF
-
- IF GENERATING68K THEN
- _ReserveMemSys: OPWORD $A440
- ELSE
- IMPORT ReserveMemSys
- ENDIF
-
- IF GENERATING68K THEN
- Macro
- _MaxMem
- dc.w $A11D
- dc.w $2288
- EndM
- ELSE
- IMPORT MaxMem
- ENDIF
-
- IF GENERATING68K THEN
- Macro
- _MaxMemSys
- dc.w $A51D
- dc.w $2288
- EndM
- ELSE
- IMPORT MaxMemSys
- ENDIF
-
- IF GENERATING68K THEN
- _SetGrowZone: OPWORD $A04B
- ELSE
- IMPORT SetGrowZone
- ENDIF
-
- IF GENERATING68K THEN
- _SetApplLimit: OPWORD $A02D
- ELSE
- IMPORT SetApplLimit
- ENDIF
-
- IF GENERATING68K THEN
- _MoveHHi: OPWORD $A064
- ELSE
- IMPORT MoveHHi
- ENDIF
-
- IF GENERATING68K THEN
- _DisposePtr: OPWORD $A01F
- ELSE
- IMPORT DisposePtr
- ENDIF
-
- IF GENERATING68K THEN
- _SetPtrSize: OPWORD $A020
- ELSE
- IMPORT SetPtrSize
- ENDIF
-
- IF GENERATING68K THEN
- _DisposeHandle: OPWORD $A023
- ELSE
- IMPORT DisposeHandle
- ENDIF
-
- IF GENERATING68K THEN
- _SetHandleSize: OPWORD $A024
- ELSE
- IMPORT SetHandleSize
- ENDIF
-
- IF GENERATING68K THEN
- _InlineGetHandleSize: OPWORD $A025
- ELSE
- IMPORT InlineGetHandleSize
- ENDIF
-
- IF GENERATING68K THEN
- _ReallocateHandle: OPWORD $A027
- ELSE
- IMPORT ReallocateHandle
- ENDIF
-
- IF GENERATING68K THEN
- _EmptyHandle: OPWORD $A02B
- ELSE
- IMPORT EmptyHandle
- ENDIF
-
- IF GENERATING68K THEN
- _HSetRBit: OPWORD $A067
- ELSE
- IMPORT HSetRBit
- ENDIF
-
- IF GENERATING68K THEN
- _HClrRBit: OPWORD $A068
- ELSE
- IMPORT HClrRBit
- ENDIF
-
- IF GENERATING68K THEN
- _MoreMasters: OPWORD $A036
- ELSE
- IMPORT MoreMasters
- ENDIF
-
- IF GENERATING68K THEN
- _BlockMove: OPWORD $A02E
- ELSE
- IMPORT BlockMove
- ENDIF
-
- IF GENERATING68K THEN
- _BlockMoveData: OPWORD $A22E
- ELSE
- IMPORT BlockMoveData
- ENDIF
-
- IF GENERATING68K THEN
- _HGetState: OPWORD $A069
- ELSE
- IMPORT HGetState
- ENDIF
-
- IF GENERATING68K THEN
- _HSetState: OPWORD $A06A
- ELSE
- IMPORT HSetState
- ENDIF
-
- IF GENERATING68K THEN
- _SetApplBase: OPWORD $A057
- ELSE
- IMPORT SetApplBase
- ENDIF
-
- IF GENERATING68K THEN
- _MaxApplZone: OPWORD $A063
- ELSE
- IMPORT MaxApplZone
- ENDIF
-
- IF GENERATING68K THEN
- Macro
- _HoldMemory
- moveq #0,d0
- dc.w $A05C
- EndM
- ELSE
- IMPORT HoldMemory
- ENDIF
-
- IF GENERATING68K THEN
- Macro
- _UnholdMemory
- moveq #1,d0
- dc.w $A05C
- EndM
- ELSE
- IMPORT UnholdMemory
- ENDIF
-
- IF GENERATING68K THEN
- Macro
- _LockMemory
- moveq #2,d0
- dc.w $A05C
- EndM
- ELSE
- IMPORT LockMemory
- ENDIF
-
- IF GENERATING68K THEN
- Macro
- _LockMemoryContiguous
- moveq #4,d0
- dc.w $A05C
- EndM
- ELSE
- IMPORT LockMemoryContiguous
- ENDIF
-
- IF GENERATING68K THEN
- Macro
- _UnlockMemory
- moveq #3,d0
- dc.w $A05C
- EndM
- ELSE
- IMPORT UnlockMemory
- ENDIF
-
- IF GENERATING68K THEN
- _DeferUserFn: OPWORD $A08F
- ELSE
- IMPORT DeferUserFn
- ENDIF
-
- IF GENERATING68K THEN
- Macro
- _DebuggerGetMax
- moveq #0,d0
- dc.w $A08D
- EndM
- ELSE
- IMPORT DebuggerGetMax
- ENDIF
-
- IF GENERATING68K THEN
- Macro
- _DebuggerEnter
- moveq #1,d0
- dc.w $A08D
- EndM
- ELSE
- IMPORT DebuggerEnter
- ENDIF
-
- IF GENERATING68K THEN
- Macro
- _DebuggerExit
- moveq #2,d0
- dc.w $A08D
- EndM
- ELSE
- IMPORT DebuggerExit
- ENDIF
-
- IF GENERATING68K THEN
- Macro
- _DebuggerPoll
- moveq #3,d0
- dc.w $A08D
- EndM
- ELSE
- IMPORT DebuggerPoll
- ENDIF
-
- IF GENERATING68K THEN
- Macro
- _GetPageState
- moveq #4,d0
- dc.w $A08D
- EndM
- ELSE
- IMPORT GetPageState
- ENDIF
-
- IF GENERATING68K THEN
- Macro
- _PageFaultFatal
- moveq #5,d0
- dc.w $A08D
- EndM
- ELSE
- IMPORT PageFaultFatal
- ENDIF
-
- IF GENERATING68K THEN
- Macro
- _DebuggerLockMemory
- moveq #6,d0
- dc.w $A08D
- EndM
- ELSE
- IMPORT DebuggerLockMemory
- ENDIF
-
- IF GENERATING68K THEN
- Macro
- _DebuggerUnlockMemory
- moveq #7,d0
- dc.w $A08D
- EndM
- ELSE
- IMPORT DebuggerUnlockMemory
- ENDIF
-
- IF GENERATING68K THEN
- Macro
- _EnterSupervisorMode
- moveq #8,d0
- dc.w $A08D
- EndM
- ELSE
- IMPORT EnterSupervisorMode
- ENDIF
-
- ; StripAddress and Translate24To32 macro to nothing on PowerPC
- ; StripAddress is implemented as a trap in System 6 or later
- IF SystemSixOrLater THEN
- IF GENERATING68K THEN
- _StripAddress: OPWORD $A055
- ELSE
- IMPORT StripAddress
- ENDIF
-
- ELSE
- ENDIF
- IF GENERATING68K THEN
- _Translate24To32: OPWORD $A091
- ELSE
- IMPORT Translate24To32
- ENDIF
-
- IF GENERATING68K THEN
- _PtrToXHand: OPWORD $A9E2
- ELSE
- IMPORT PtrToXHand
- ENDIF
-
- IF GENERATING68K THEN
- _HandAndHand: OPWORD $A9E4
- ELSE
- IMPORT HandAndHand
- ENDIF
-
- IF GENERATING68K THEN
- _PtrAndHand: OPWORD $A9EF
- ELSE
- IMPORT PtrAndHand
- ENDIF
-
- IF OLDROUTINENAMES THEN
- ENDIF
- ENDIF ; __MEMORY__
-